$(function () {
    // 需求1:初始化文章分类列表
    let layer = layui.layer
    // 封装成函数,后面要调用
    initArtCateList()
    function initArtCateList() {
        axios({
            method: 'GET',
            url: '/my/article/cates',
        }).then(function (res) {
            // console.log(res.data.data);
            // 条件判断失败提示信息
            if (res.data.status != 0) return layui.layer.msg(res.data.message)

            //需求2:将数据渲染表格
            let arr = []
            res.data.data.forEach(function (item) {
                arr.push(`
                     <tr>
                        <td>${item.Id}</td>
                        <td>${item.name}</td>
                        <td>${item.alias}</td>
                        <td>
                            <button data-id="${item.Id}"  class="btn-edit layui-btn  layui-btn layui-btn-xs">编辑</button>
                            <button data-id="${item.Id}" class=" btn-delete layui-btn  layui-btn layui-btn-xs layui-btn-danger">删除</button>
                        </td>
                    </tr>
            `)
            })
            $('tbody').empty().html(arr.join(''))
        })
    }

    // 需求3:点击添加,显示对话框
    let indexAdd = null
    $('#addBtn').click(function () {
        indexAdd = layer.open({
            type: 1,
            title: '添加文章分类',
            area: ['500px', '300px'],
            content: `
            <form class="layui-form" action="" id="addForm">
                <!-- 1.名称 -->
                <div class="layui-form-item">
                    <label class="layui-form-label">分类名称</label>
                    <div class="layui-input-block">
                        <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称" autocomplete="off"
                            class="layui-input">
                    </div>
                </div>
                <!-- 2.别名 -->
                <div class="layui-form-item">
                    <label class="layui-form-label">分类别名</label>
                    <div class="layui-input-block">
                        <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名" autocomplete="off"
                            class="layui-input">
                    </div>
                </div>
                <!-- 3.按钮 -->
                <div class="layui-form-item">
                    <div class="layui-input-block">
                        <button class="layui-btn" lay-submit lay-filter="formDemo">确认添加</button>
                        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                    </div>
                </div>
            </form>`
        })
    })

    // 需求4:添加文章分类,事件委托
    $('body').on('submit', '#addForm', function (e) {
        // 阻止默认行为
        e.preventDefault()
        // 发送axios
        axios({
            method: 'POST',
            url: '/my/article/addcates',
            data: $(this).serialize()
        }).then(function (res) {
            console.log(res.data);
            // 判断是否成功
            if (res.data.status != 0) return layer.msg(res.data.message)
            // 关闭对话框
            layer.close(indexAdd)
            // 提示成功
            layer.msg(res.data.message)
            // 重新渲染
            initArtCateList()
        })

    })


    // 需求5:点击按钮展示对话框,事件委托
    let indexEdit = null
    let form = layui.form
    $('body').on('click', '.btn-edit', function () {

        indexEdit = layer.open({
            type: 1,
            title: '修改文章分类',
            area: ['500px', '300px'],
            content: `
            <form lay-filter="formedit"    class="layui-form" action="" id="editForm">
            <!-- 0,隐藏域填充id值,将来修改数据的时候使用 -->
            <input type="hidden" name="Id">
                <!-- 1.名称 -->
                <div class="layui-form-item">
                    <label class="layui-form-label">分类名称</label>
                    <div class="layui-input-block">
                        <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称" autocomplete="off"
                            class="layui-input">
                    </div>
                </div>
                <!-- 2.别名 -->
                <div class="layui-form-item">
                    <label class="layui-form-label">分类别名</label>
                    <div class="layui-input-block">
                        <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名" autocomplete="off"
                            class="layui-input">
                    </div>
                </div>
                <!-- 3.按钮 -->
                <div class="layui-form-item">
                    <div class="layui-input-block">
                        <button class="layui-btn" lay-submit lay-filter="formDemo">确认修改</button>
                        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                    </div>
                </div>
            </form>`
        })


        // 需求6:展示当前的文章分类信息
        let id = $(this).attr('data-id')
        // 发送axios
        axios({
            method: 'GET',
            url: '/my/article/cates/' + id,
        }).then(function (res) {
            if (res.data.status != 0) return layer.msg(res.data.message)

            // 展示数据
            form.val('formedit', res.data.data)
        })

    })


    // 需求7:修改文章分类,事件委托,完全赋值的添加文章分类,修改内部数据
    $('body').on('submit', '#editForm', function (e) {
        // 阻止默认行为
        e.preventDefault()
        // 发送axios
        axios({
            method: 'POST',
            url: '/my/article/updatecate',
            data: $(this).serialize()
        }).then(function (res) {
            console.log(res.data);
            // 判断是否成功
            if (res.data.status != 0) return layer.msg(res.data.message)

            // 关闭对话框
            layer.close(indexEdit)
            // 提示成功
            layer.msg(res.data.message)
            // 重新渲染
            initArtCateList()
        })

    })


    // 需求8: 删除功能-事件委托
    $('body').on('click', '.btn-delete', function () {
        let id = $(this).attr('data-id')
        // 弹窗 确定删除吗?
        layer.confirm('确定删除吗?', { icon: 3, title: '提示' }, function (index) {
            //    发送axios
            axios({
                method: 'GET',
                url: '/my/article/deletecate/' + id,

            }).then(function (res) {
                // 判断是否成功
                if (res.data.status != 0) return layer.msg(res.data.message)
                // 成功的提示信息
                layer.msg(res.data.message)
                // 再次渲染页面
                initArtCateList()
            })

            // 在axios处理函数外面关闭对话框
            layer.close(index);
        });
    })


})